"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/5/28 8:52
@Description :
python如何实现和磁盘的交互   读取文件 写出文件
解决:   数据持久化
1. 写入文本   txt  .doc  .excel  .json   .csv
    1.1 数据量小   crud   个性化的设置参数
    1.2 内置os模块  包含很多和文件相关的操作
2. 写入数据库   专业的数据管理软件    pymysql
    2.1  数据量大    SQL
"""
import os
import time

# 获取当前的工作目录
print('当前工作目录:', os.getcwd())
# 获取环境变量
path_envs = os.getenv('JAVA_HOME')
print('path环境变量:', path_envs)

# os模块文件操作
# 创建文件夹  目标文件夹不存在    当文件已存在时  FileExistsError
"""
try:
    os.mkdir('test.py')
except FileExistsError:
    print('文件已存在，无法重复创建')
"""

# 判定文件是否存在
file_exist = os.path.exists('test.py')
print('test目录已存在?', file_exist)
if not file_exist:
    print('test目录已创建')
    os.mkdir('test.py')  # 目标目录的上一个层级要存在

# 创建多层级目录  a/b/c
file_exist = os.path.exists('a/b/c')
print(' exist a/b/c:', file_exist)
if not file_exist:
    os.makedirs('a/b/c')

# 删除目录中的文件
# os.remove('a/b/c/a.txt')
# 如何删除空目录      OSError
# os.rmdir('test.py')
# os.rmdir('a/b/c')
# 删除多层级空目录
# os.removedirs('a/b/c')

# 文件重命名      renames 在重命名的同时 可以实现文件的移动
# os.renames('a.txt', 'pack1/c.txt')   #  移动文件时目标位置不存在时会自动创建
os.rename('a.txt', 'pack1/c.txt')  # 移动文件时目标位置需要存在 否则抛出异常    FileNotFoundError


# 文件信息细节获取   文件大小  文件类型 文件创建修改时间
file_stat = os.stat('c.txt')
file_size = file_stat.st_size
print('c.txt文件大小:', file_size)
mtime = file_stat.st_mtime
mtime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(mtime))
print('文件的更新时间:', mtime)

# 判定文件的类型
# isdir = os.path.isdir('test.py/a.txt')   # 目录
isdir = os.path.isfile('c.txt')  # 普通文本文件
print('test.py is dir', isdir)

# 文件路径操作  __file__
dir_name = os.path.dirname(__file__)
print(dir_name)
# 查看指定路径下所有的文件
lst_dir = os.listdir('test.py')
print(lst_dir)
